package simple.number;

/**
 * <a href="https://leetcode.cn/problems/hamming-distance/">461. 汉明距离</a>
 * 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
 * 给你两个整数 x 和 y，计算并返回它们之间的汉明距离。
 * 示例 1：
 *   输入：x = 1, y = 4
 *   输出：2
 *   解释：
 *     1   (0 0 0 1)
 *     4   (0 1 0 0)
 *            ↑   ↑
 *   上面的箭头指出了对应二进制位不同的位置。
 * 示例 2：
 *   输入：x = 3, y = 1
 *   输出：1
 *   提示：
 *     0 <= x, y <= 2^31 - 1
 * @author 刘学松
 * @date 2023-05-16 8:55
 */
public class 汉明距离 {
    public static void main(String[] args) {
        hammingDistance(1, 4);
    }
    public static int hammingDistance(int x, int y) {
        int result = x ^ y;
        int count = 0;
        while (result != 0) {
            if ((result & 1) == 1) {
                ++count;
            }
            result = result >> 1;
        }
        return count;
    }
}
